Location-based device automation

ABSTRACT

This disclosure describes systems, methods, and computer program products for identifying a presence of a plurality of mobile devices at a geographic location; determining an entertainment option to be played at the geographic location based on the identified plurality of mobile devices; and based on the determination, selecting an entertainment option to be played at the geographic location.

TECHNICAL FIELD

This disclosure is generally related to automation of devices.

BACKGROUND

Devices (e.g., home appliances) can be automated based on varioussettings. For example, home lighting can be configured to activate ordeactivate depending on a day and time.

SUMMARY

This disclosure describes systems, methods, and computer programproducts for location-based device automation. Devices (e.g., lights,appliances, and climate control systems) associated with a particulargeographic location can be automated based on a geographic location ofone or more mobile devices. As described in this specification, aparticular geographic location can be a room, office, building,residence, or any other structure that is capable of housing devices.Automation of a device can include activating or deactivating thedevice, or adjusting one or more settings of the device.

Automation modes (e.g., a home mode, an away mode, or a vacation mode)can be used to adjust automation settings for one or more devices. Aparticular automation mode can be selected to automate (e.g., adjust thesettings) one or more devices using the configured automation settingsfor the particular automation mode. An automation setting can indicatewhether a particular device should be active or inactive. An automationsetting can also indicate a particular setting for the particular device(e.g., a thermostat setting, a volume level, or a light dimmingsetting).

A user profile can be associated with a mobile device, and can be usedto personalize automation of one or more devices. The user profile canbe used to select a preferred automation mode and/or can personalizeautomation of individual devices based on preferences stored in the userprofile. Automation modes for a particular geographic location can beconfigured differently based on a presence of multiple mobile devicesthat are associated with the particular geographic location.

In some implementations, a method comprises: determining a distance of amobile device from a location, the mobile device being associated withthe location; determining a duration that the mobile device is locatedbeyond a threshold distance from the location; and selecting anautomation mode for the location based in part on the determineddistance and duration of the mobile device.

In some implementations, a system comprises one or more processors andmemory coupled to the one or more processors. The memory is configuredfor storing instructions, which, when executed by the one or moreprocessors, causes the one or more processors to perform operations. Theoperations comprise determining a distance of a mobile device from aparticular geographic location, the mobile device being associated withthe particular geographic location; determining a duration that themobile device is located beyond a threshold distance from the location;and selecting an automation mode for the location based in part on thedetermined distance and duration of the mobile device. Otherimplementations are disclosed that are directed to methods and systems.

In some implementations, a method comprises identifying a presence of aplurality of mobile devices at a particular geographic location;determining an entertainment option to be played at the particulargeographic location based on the identified plurality of mobile devices;and based on the determination, selecting an entertainment option to beplayed at the particular geographic location.

In some implementations, a system comprises one or more processors andmemory coupled to the one or more processors. The memory is configuredfor storing instructions, which, when executed by the one or moreprocessors, causes the one or more processors to perform operations. Theoperations comprise identifying a presence of a plurality of mobiledevices at a particular geographic location; determining anentertainment option to be played at the particular geographic locationbased on the identified plurality of mobile devices; and based on thedetermination, selecting an entertainment option to be played at theparticular geographic location.

Particular implementations of the location-based home automationapplication disclosed herein provide one or more of the followingadvantages. Devices located in a particular geographic location can beautomated based in part on a distance of a mobile device from thatparticular geographic location. Devices (e.g., lighting systems,appliances, and climate control system) can be automated using anautomation mode (e.g., home, away, or vacation) or preferred automationsettings of individual devices based in part on a distance of a mobiledevice. Automation modes can be personalized using one or more userprofiles associated with the mobile device. Detection of multiple mobiledevices at a particular geographic location, including mobile devicesthat are not associated with the particular geographic location, can beused to adjust existing automation modes.

The details of the disclosed implementations are set forth in theaccompanying drawings and the description below. Other features,objects, and advantages will be apparent from the description anddrawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 illustrates an exemplary system for performing device automationbased on a mobile device distance from a particular geographic location.

FIG. 2 illustrates an exemplary process performing device automation ata particular geographic location based on the distance of a mobiledevice from the particular geographic location.

FIG. 3 illustrates an exemplary process for adjusting device automationbased on a plurality of mobile devices.

FIG. 4 is an exemplary view for illustrating geofences at a particulargeographic location.

FIG. 5 illustrates an exemplary graphical user interface for automatingdevices at a particular geographic location.

FIG. 6 is a block diagram of an exemplary operating environment for adevice capable of running a device automation application.

FIG. 7 is a block diagram of an exemplary architecture for a devicecapable of running a device automation application.

The same reference symbol used in various drawings indicates likeelements.

DETAILED DESCRIPTION Exemplary System for Performing Automation Based ona Mobile Device Location

FIG. 1 illustrates an exemplary system 100 for performing deviceautomation based a mobile device distance from a particular geographiclocation. The system 100 can include a location-based automation system102 that is configured to select and/or adjust automation modes based inpart on the geographic locations of one or more mobile devices 122, 124,and 126. The location-based automation system 102 can be associated witha particular geographic location, where the location-based automationsystem 102 is tasked with the automation of devices associated with,e.g., located at, the particular geographic location.

The location-based automation system 102 can communicate with acommunications system 104 to determine the geographic locations ofmobile devices 122, 124, and 126. The communications system 104 caninteract with mobile devices 122, 124, and 126 over one or more wired orwireless networks 120, e.g., WI-FI, cellular, BLUETOOTH, the Internet.For example, the communications system 104 can send messages to themobile devices 122, 124, and 126 to request a geographic location of themobile device. The communications system 104 can also receive messagesfrom the mobile devices 122, 124, and 126 providing a geographiclocation of the mobile device. In some implementations, thelocation-based automation system 102 and the communications system 104can be part of the same device (e.g., a personal computer). In oneexample configuration, the communications system 104 can be a wirelesstransceiver coupled to or integrated with the personal computer, and thelocation-based automation system 102 can be implemented by software orfirmware instructions that are executed by one or more processors of thepersonal computer. In some implementations, the location-basedautomation system 102 and communications system 104 can be part of anetwork device or appliance, including but not limited to a router orhub.

The location-based automation system 102 can interact with one or moredevice control systems, e.g., an entertainment control system 108, aclimate control system 110, an appliance control system 112, a lightingcontrol system 114, and a security control system 116. The devicecontrol systems can include hardware or software that is configured toobtain current device settings or determine the current state of acontrolled device. For example, device hardware and/or software canindicate whether particular devices are active or inactive, or canprovide one or more current settings for the particular devices. Thelocation-based automation system 102 can use the device control systemsto obtain device states and to set automation modes for the devices.

In some implementations, the device control systems can be integratedwith the devices they are controlling or be part of a separate device ordevices. For example, in some implementations the device control systemscan be included in an X10 controller or module, which is described inthe publicly available X10 standard. X10 is an international and openindustry standard for communication among electronic devices used forhome automation, also known as domotics. X10 primarily uses power linewiring for signaling and control, where the signals involve brief radiofrequency bursts representing digital information. A wireless radiobased protocol transport is also defined by the X10 specification. Otherknown domotic standards can be used to implement the device controlsystems, including but not limited to include INSTEON, KNX, SYSTEM BOX,LONWORKS, CRESTRON, C-BUS, UNIVERSAL POWERLINE BUS (UPB), UPNP, ZIGBEEand Z-WAVE.

The entertainment control system 108 can be used to configure automationsettings for home theater systems and music systems. In someimplementations, the entertainment control system 108 can be used toautomate the type of content that is played, e.g., music or movies,based on the presence of particular mobile devices 122, 124, or 126. Forexample, a particular music playlist can be played through a hometheatre system or music system when a particular mobile device 122, 124,or 126 is detected within a specified distance of a particulargeographic location.

In some implementations, when a particular geographic location hasmulti-room speaker systems, the entertainment control system 108 can beused to direct sound to a particular speaker system based on where amobile device 122, 124, or 126 is located. For example, music can beplayed through speakers that are located in a living room when aparticular mobile device 122, 124, or 126 is located in the living room.In a case where the particular mobile device 122, 124, or 126 isrelocated to a new area (e.g., a backyard), the music being playedthrough speakers that are located in the living room can be routed tospeakers that are located in the new area (e.g., the backyard).

The climate control system 110 can be used to configure automationsettings for climate control systems, e.g., heating and cooling, at alocation. For example, temperature settings for a location (e.g., apool, spa, home, office, or individual rooms in a home or office) can beadjusted based on a presence of particular mobile devices 122, 124, or126.

The appliance control system 112 can be used to configure automationsettings for appliances, e.g., microwave ovens, coffee machines, washingmachines, televisions, and water heaters, based on a presence ofparticular mobile devices 122, 124, or 126.

The lighting control system 114 can be used to configure automationsettings for one or more lights at a location. For example, the lightingcontrol system 114 can activate or deactivate lights, or adjust lightsettings (e.g., dimming a light) in one or more areas, e.g., rooms, atthe location based on a presence of particular mobile devices 122, 124,or 126. The lighting control system 114 can also automate lights basedon various inputs (e.g., time, day, date, and/or month).

In some implementations, when a particular mobile device 122, 124, or126 has been misplaced in a particular geographic location, the lightingcontrol system 114 can be configured to activate lights in a room inwhich the particular mobile device was last detected. The lightingcontrol system 114 can also deactivate lights in the remaining rooms. Auser of the mobile device 122, 124, or 126 can instruct thelocation-based automation system 102 (e.g., using a GUI interface to thelocation-based automation system 102) to locate the mobile device 122,124, or 126.

The security control system 116 can be used to configure automationsettings for security systems associated with a particular geographiclocation based on a presence of particular mobile devices 122, 124, or126. For example, security systems can be deactivated based in part on apresence of particular mobile devices or can be activated based in parton a non-presence of particular mobile devices. In some implementations,the presence and non-presence of mobile devices can be based on whetherthe mobile devices 122, 124, or 126 are within a specified distance fromthe particular geographic location. In some implementations, theactivation and deactivation of security systems can be based in part onadditional inputs (e.g., time, day, date, and/or month).

The location-based automation system 102 can communicate with a usersettings database 118 to obtain user profiles associated with particularmobile devices 122, 124, and 126. The user profiles can be used topersonalize automation of one or more devices at a location based on thepresence of a particular mobile device 122, 124, or 126. The userprofiles can be stored in the user settings database 118 and/or in themobile devices 122, 124, and 126. For example, a user of a particularmobile device can configure settings for one or more devices (e.g.,entertainment, climate, appliance, lighting, and security) and thelocation-based automation system 102 can automate the one or moredevices based on the configured settings when the particular mobiledevice is within a particular distance from the geographic locationassociated with the location-based automation system 102.

In the example applications described above, various technologies can beused to determine the current location of a mobile device 122, 124, or126, including short-range communication technologies such as BLUETOOTHor Radio-frequency Identification (RFID) tags. In some implementations,the location of a mobile device can be determined using cellularposition technologies, e.g., using data received from cellular towers130, or WI-FI positioning technologies (e.g., trilateralization),together with floor plan information or a map database and geocoding. Ifthe mobile device is outdoors, the GPS or other GNSS technologies can beused to determine location of a mobile device, e.g., using data receivedfrom satellites 128. In some cases, the current location of a mobiledevice 122, 124, or 126 can be determined by the mobile device, e.g.,using cellular or WI-FI position technologies. Alternatively, the mobiledevice 122, 124, or 126 can obtain its location from an externallocation service, e.g., Skyhook.

Exemplary Process for Performing Device Automation

FIG. 2 illustrates an exemplary process 200 for performing deviceautomation at a particular geographic location based on the distance ofa mobile device from the particular geographic location. In someimplementations, process 200 can be implemented using the architecturedescribed in reference to FIG. 5.

In some implementations, process 200 can begin by determining thedistance of a mobile device from a particular geographic location (202).For example, the distance of a mobile device from a particulargeographic location can be determined using the communications system104, as described in reference to FIG. 1.

In some implementations, one or more geo-fences can be placed around thegeographic locations. A geo-fence is a virtual perimeter for areal-world geographic area. A geo-fence can be dynamically generated asin a radius around a home or other point location. A geo-fence can be apredefined set of boundaries like neighborhood boundaries. In someimplementations, when a location-aware mobile device enters or exits ageo-fence, the mobile device can receive a notification from alocation-based service, which can contain information about the locationof the device. In other implementations, the mobile device itself candetermine when it has entered or exited a geo-fence based on knowledgeof its location (e.g., using GPS, cellular or WI-FI positioning) andgeo-fence boundaries, which can be stored on the mobile device in, forexample, user settings database 118.

The geo-fence notice can be sent by the location-based service to themobile device or directly to the location-based automation system 102over a wireless transmission medium (e.g., WI-FI, Internet). If thenotice is sent to the mobile device only or if the location of themobile device computed by the mobile device, then the mobile device cansend the notification directly to the location-based automation system102 using a wireless communication link and wireless transceiver on themobile device and part of the communication system 104. The geofencescan be circular or a polygon. If circular geofences are used, then theuser can specify the radius of each geofence. More than one geofence canbe placed around a geographic location, and each geofence can have adifferent radius that can be associated by the user with an automationmode, as described in further detail below.

Each mobile device can be associated with a particular user profile,which can be stored in the user settings database 118. Further, eachmobile device and/or user profile can be paired with one or moreparticular geographic locations. In some implementations, automation ofdevices at a particular geographic location is permitted for mobiledevices that are paired with the particular geographic location. Thus,for example, lights and appliances at the particular geographic locationcan be automated when a paired mobile device is detected in proximity tothe particular geographic location, but not when unpaired (e.g.,unrecognized) mobile devices are detected. These pairings can be storedin the user settings database 118.

The user profile can be used to configure automation settings for one ormore devices at one or more particular geographic locations. Forexample, a user can configure her user profile so that the temperaturein a first location, e.g., a home, is set to 68 degrees and thetemperature in a second location, e.g., an office, is set to 66 degrees.

Automation settings for a user profile can be configured using a mobiledevice associated with the user profile. The mobile device can presentan automation settings interface, e.g., a GUI interface, that allows auser to configure automation settings for one or more devices at one ormore particular geographic locations. The automation settings interfacecan also be used to configure distance settings for when a particularautomation mode should be selected (e.g., select home mode when thedistance of the mobile device is within 100 feet of a particulargeographic location).

Process 200 can continue by selecting an automation mode for theparticular geographic location based on a distance of the mobile devicefrom the particular geographic location (204). In some implementations,the process 200 can select an automation mode, e.g., home mode, an awaymode, or a vacation mode, based on how far away the mobile device isfrom the particular geographic location.

In some implementations, the distance of the mobile device from aparticular geographic location can be defined by the radius of acircular geofence. For example, two circular geofences, each having adifferent radii R1, R2, can be placed around a user's home, where R2>R1,and the distance can be in feet, meters, miles or any other suitableunit of distance measure. When the distance of the mobile device lessthan or equal to R1, the location-based automation system 102 can entera “home” mode, and various automation actions associated with the “home”mode can be initiated according to the user profile. When the distanceof the mobile device is between R1 and R2, the location-based automationsystem 102 can enter an “away” mode, and various automation actionsassociated with the “away” mode can be initiated according to the userprofile. When the distance of the mobile device is greater than R3, thelocation-based automation system 102 can enter a “vacation” mode, andvarious automation actions associated with the “vacation” mode can beinitiated according to the user profile.

Before entering a particular automation mode, the location-basedautomation system 102 can also determine how long the mobile device hasdwelled at a particular distance from the particular geographiclocation. For example, if the location-based automation system 102determines that the mobile device has exited the geo-fence with radiusR2 and has not re-entered that geo-fence within the last x hours (e.g.,48 hours), then the “vacation” mode can be activated.

Accordingly, the dwell time of the mobile device inside or outside ageo-fence can be used with geo-fence crossing information (exit or enterinformation) to determine an automation mode for an environment. Oncethe automation mode is determined, one or more device control systems inthe environment can be placed into the automation mode according to auser profile.

An automation mode can be configured to automate (e.g., adjustautomation settings) of one or more devices that are associated with theparticular geographic location, e.g., devices that are located in aparticular home. An automation setting can indicate whether a particulardevice should be active or inactive. An automation setting can alsoindicate a configuration for the particular device (e.g., a thermostatsetting, a volume level, or a light dimming setting).

For example, a home mode can be configured so that the climate at theparticular geographic location is set at a certain temperature, thatcertain lights are active in one or more rooms, and that securitysystems at the particular geographic location are inactive. In someimplementations, the automation mode can be configured to automate(e.g., adjust automation settings) one or more devices based on a timeof day, day of the week, date, and/or month. For example, a home modecan be configured so that the climate at the particular geographiclocation is at one temperature between the hours of 6 am to 10 pm and ata different temperature between the hours of 10:01 pm to 5:59 am.

In another example, an away mode can be configured so that the climateat the particular geographic location is maintained at a certaintemperature, that the doors and windows are locked, that the lights areoff, and that security systems are active. A vacation mode can beconfigured so that climate control is inactive, that the doors andwindows are locked, that the lights are off, and that security systemsare active.

In some implementations, patterns of device usage can be monitored(e.g., times when lights are active/inactive) and the patterns can beused in the automation of devices to mimic realistic activity. Forexample, patterns of light usage can be monitored when mobile devices(e.g., mobile devices of users that reside at the particular geographiclocation) are present at the particular geographic location and thepatterns can be reenacted when the vacation mode is selected, thusgiving the impression that the particular geographic region is occupied.

In some implementations, the process 200 can select an automation modebased in part on where the mobile device is located relative to one ormore specified distances from the particular geographic location. Anautomation mode can also be selected based in part on a duration thatthe mobile device has been beyond a particular distance from theparticular geographic location. For example, the process 200 can selectthe home mode when the mobile device is within 50 feet of the particulargeographic location. Similarly, the process 200 can select the away modewhen the mobile device distance exceeds 2 miles from the particulargeographic location. Further, the process 200 can select the vacationmode when the mobile device distance exceeds 250 miles or if the mobiledevice distance exceeds 2 miles from the particular geographic locationfor a particular time period, e.g., overnight.

In some implementations, the process 200 can monitor the mobile devicedistance and can adjust the automation mode as the mobile deviceapproaches a particular geographic location. For example, the process200 can determine that the mobile device is traveling toward theparticular geographic location and, in response to the determination,can select the home mode.

In some implementations, the process 200 can measure the distance of themobile device based on check-ins on social networking sites by a useroperating the mobile device. For example, a user operating the mobiledevice may check-in at a restaurant that is located 15 miles away fromthe particular geographic location. The process 200 can determine thatthe restaurant at which the user checked-in is located 15 miles from theparticular geographic location and, in response to the determination,can select an appropriate automation mode based on that determination.

In some implementations, the process 200 can monitor the mobile devicedistance and can predict an estimated time of arrival of the userassociated with the mobile device. The process 200 can gradually adjustthe automation mode of one or more devices (e.g., a climate controlsystem or a pool temperature), so that the automation settings specifiedby the user associated with the mobile device are reached upon theuser's arrival.

The process 200 can evaluate additional inputs when selecting anautomation mode based on the mobile device location. For example,activity occurring at the particular geographic location (e.g., openingof doors, activating/deactivating lights and appliances) can beevaluated to determine whether a different automation mode should beselected (e.g., whether the system should remain in home mode or switchto away mode). In another example, the presence of a resident's keyswithin the particular geographic location can prevent selection of anaway or vacation mode (e.g., to prevent doors from being locked eventhough the mobile device is no longer within the particular geographiclocation).

Exemplary Process for Adjusting Device Automation Based on a Pluralityof Mobile Devices

FIG. 3 illustrates an exemplary process for adjusting device automationbased on a plurality of mobile devices. In some implementations, process300 can be implemented using the architecture described in reference toFIG. 5.

In some implementations, process 300 can begin by detecting a pluralityof mobile devices at a particular geographic location (302). Thepresence of mobile devices can be detected using, for example, thecommunications system 104, as described in reference to FIG. 1.

Process 300 can continue by adjusting automation modes of the one ormore devices at the location (304). In some implementations, automationof devices at a particular geographic location is permitted for mobiledevices that are paired with the particular geographic location. Thus,for example, lights and appliances at the particular geographic locationcan be automated when a paired mobile device is detected in proximity tothe particular geographic location, but not when unpaired (e.g.,unrecognized) mobile devices are detected.

In some implementations, automation modes of the one or more devices canbe adjusted to accommodate automation settings configured by users ofmultiple paired mobile devices. For example, in a case where multiplemobile devices are identified in proximity to a particular geographiclocation, automation settings for a selected automation made can beadjusted (e.g., averaged) to accommodate automation settings that wereconfigured by users of the multiple mobile devices. Thus, if a firstuser of a first mobile device has indicated a thermostat temperaturepreference of 65 degrees and a second user of a second mobile device hasindicated a thermostat temperature preference of 70 degrees, then thethermostat temperature can be averaged between the indicated preferencesto set a thermostat temperature of 67.5 degrees.

In some implementations, devices at a particular geographic location areautomated based on detection of both paired and unpaired mobile devicesat the particular geographic location. In such implementations,automation modes of the one or more devices can be adjusted based on thepresence of multiple mobile devices at the geographic locations. Forexample, if threshold number (e.g., 10) of mobile devices is detected atthe particular geographic location, then automation settings of devicesat the particular geographic location can be adjusted to accommodate theincreased number of occupants. In this example, the thermostattemperature can be reduced; the volume level of one or more musicsystems can be increased; and certain lights can be dimmed, activated ordeactivated.

In some implementations, mobile devices detected at the particulargeographic location can be used to automate selection of entertainmentoptions (e.g., audio or video) being played at the particular geographiclocation.

For example, music playlists associated with the detected mobile devicescan be compared to identify songs that are common (e.g., songs stored ona threshold percentage of the detected mobile devices), songs that areuncommon (e.g., songs not stored on a threshold percentage of thedetected mobile devices), or songs that are popular among the detectedmobile devices (e.g., songs that have been rated at or above a thresholdrating by a threshold percentage of users of the mobile devices using amusic application or a social networking site). The identified songs canbe played through a music system or home theater system located at theparticular geographic location.

Similarly, when determining which movie to play through a home theatersystem at the particular geographic location, mobile devices detected atthe particular geographic location can be compared to identify moviesthat have been viewed by or are popular (e.g., movies that have beenrated at or above a threshold rating by a threshold percentage of usersof the mobile devices using a movie application or a social networkingsite) among the detected mobile devices. The identified movies can beplayed through the home theater system located at the particulargeographic location.

Exemplary View for Illustrating Geofences at a Particular GeographicLocation

FIG. 4 is an exemplary view 400 for illustrating geofences 406 and 408at a particular geographic location 402. The geofences are virtualperimeters for a real-world geographic area. The geofences can bedefined using radii originating from the particular geographic location402 or using some other geographic boundary, e.g., coordinates thatdefine a particular neighborhood, zip code, city, state, country, orcontinent.

In FIG. 4, the geofence 406 is defined using a radius R1 and thegeofence 408 is defined using the radius R2. The distance between radiiR1 and R2 can be in feet, meters, miles, or any other suitable unit ofdistance measure. A mobile device 404 can be associated with theparticular geographic location 402. Further, automation of devices atthe particular geographic location 402 can be triggered based on aposition of the mobile device 404 relative to the geofences 406 and 408.

For example, when the distance of the mobile device 404 less than orequal to R1, the location-based automation system 102 can enter a “home”mode, and various automation actions associated with the “home” mode canbe initiated according to the user profile. Similarly, when the distanceof the mobile device is between R1 and R2, the location-based automationsystem 102 can enter an “away” mode, and various automation actionsassociated with the “away” mode can be initiated according to the userprofile. Further, when the distance of the mobile device is greater thanR2, the location-based automation system 102 can enter a “vacation”mode, and various automation actions associated with the “vacation” modecan be initiated according to the user profile.

Exemplary GUI for Automating Devices

FIG. 5 illustrates an exemplary graphical user interface (GUI) 500 forautomating devices at a particular geographic location. For example, theGUI 500 can be accessed on a display coupled to the location-basedautomation system 102 or through a mobile device.

The GUI 500 includes a mobile device identifier field 502, anenvironment field 504, a radius field 506, and a mode field 508. Themobile device identifier field 502 can be configured to specify aparticular mobile device, e.g., “Mobile Device 1” and “Mobile Device 2”.Mobile devices can be specified using unique mobile device identifiers,e.g., an International Mobile Equipment Identity (IMEI) number. Eachmobile device can be associated with one or more geographic locations,i.e., environments. The geographic locations can be specified in theenvironment field 504. In some implementations, a particular geographiclocation, e.g., “Home”, can be subdivided into several environments,e.g., “Living room”, “Backyard”, and “Pool area”.

Automation settings for particular mobile devices are specified in theradius field 506 and the mode field 508. In particular, the mode field508 can indicate a particular automation mode and the radius field 506can specify a distance. As a result, the particular automation mode canbe triggered when a particular mobile device is within the specifieddistance. The distance can be specified relative to a particulargeographic location, e.g., trigger an automation mode when a particularmobile device is less than or equal to a specified distance, or as abounded distance, e.g., trigger an automation mode when a particularmobile device is between a first and second distance.

Exemplary Operating Environment

FIG. 6 is a block diagram of an exemplary operating environment for adevice capable of running a device automation application. In someimplementations, devices 602 a and 602 b can communicate over one ormore wired or wireless networks 610. For example, wireless network 612(e.g., a cellular network) can communicate with a wide area network(WAN) 614 (e.g., the Internet) by use of gateway 616. Likewise, accessdevice 618 (e.g., IEEE 802.11g wireless access device) can providecommunication access to WAN 1114. Devices 602 a, 602 b can be any devicecapable of displaying GUIs of the disclosed device automationapplication, including but not limited to portable computers, smartphones and electronic tablets. In some implementations, the devices 602a, 602 b do not have to be portable but can be a desktop computer,television system, kiosk system or the like.

In some implementations, both voice and data communications can beestablished over wireless network 612 and access device 618. Forexample, device 602 a can place and receive phone calls (e.g., usingvoice over Internet Protocol (VoIP) protocols), send and receive e-mailmessages (e.g., using SMTP or Post Office Protocol 3 (POP3)), andretrieve electronic documents and/or streams, such as web pages,photographs, and videos, over wireless network 612, gateway 616, and WAN614 (e.g., using Transmission Control Protocol/Internet Protocol(TCP/IP) or User Datagram Protocol (UDP)). Likewise, in someimplementations, device 602 b can place and receive phone calls, sendand receive e-mail messages, and retrieve electronic documents overaccess device 618 and WAN 614. In some implementations, device 602 a or602 b can be physically connected to access device 618 using one or morecables and access device 618 can be a personal computer. In thisconfiguration, device 602 a or 602 b can be referred to as a “tethered”device.

Devices 602 a and 602 b can also establish communications by othermeans. For example, wireless device 602 a can communicate with otherwireless devices (e.g., other devices 602 a or 602 b, cell phones) overthe wireless network 612. Likewise, devices 602 a and 602 b canestablish peer-to-peer communications 620 (e.g., a personal areanetwork) by use of one or more communication subsystems, such as theBLUETOOTH™ communication devices. Other communication protocols andtopologies can also be implemented.

Devices 602 a or 602 b can communicate with service 630 over the one ormore wired and/or wireless networks 610. For example, service 630 can bean online device automation application service that includes thefeatures described in reference to FIGS. 1-3.

Device 602 a or 602 b can also access other data and content over one ormore wired and/or wireless networks 610. For example, contentpublishers, such as news sites, Really Simple Syndication (RSS) feeds,Web sites and developer networks can be accessed by device 602 a or 602b. Such access can be provided by invocation of a web browsing functionor application (e.g., a browser) running on the device 602 a or 602 b.

Devices 602 a and 602 b can exchange files over one or more wireless orwired networks 610 either directly or through service 630.

Exemplary Device Architecture

FIG. 7 is a block diagram of an exemplary architecture for a devicecapable of running the disclosed device automation application.Architecture 700 can be implemented in any device for generating thefeatures described in reference to FIGS. 1-3, including but not limitedto portable or desktop computers, smart phones and electronic tablets,television systems, game consoles, kiosks and the like. Architecture 700can include memory interface 702, data processor(s), image processor(s)or central processing unit(s) 704, and peripherals interface 706. Memoryinterface 702, processor(s) 704 or peripherals interface 706 can beseparate components or can be integrated in one or more integratedcircuits. The various components can be coupled by one or morecommunication buses or signal lines.

Sensors, devices, and subsystems can be coupled to peripherals interface706 to facilitate multiple functionalities. For example, motion sensor710, light sensor 712, and proximity sensor 714 can be coupled toperipherals interface 706 to facilitate orientation, lighting, andproximity functions of the device. For example, in some implementations,light sensor 712 can be utilized to facilitate adjusting the brightnessof touch surface 746. In some implementations, motion sensor 710 (e.g.,an accelerometer, gyros) can be utilized to detect movement andorientation of the device. Accordingly, display objects or media can bepresented according to a detected orientation (e.g., portrait orlandscape).

Other sensors can also be connected to peripherals interface 706, suchas a temperature sensor, a biometric sensor, or other sensing device, tofacilitate related functionalities.

Location processor 715 (e.g., GPS receiver) can be connected toperipherals interface 706 to provide geo-positioning. Electronicmagnetometer 716 (e.g., an integrated circuit chip) can also beconnected to peripherals interface 706 to provide data that can be usedto determine the direction of magnetic North. Thus, electronicmagnetometer 716 can be used as an electronic compass.

Camera subsystem 720 and an optical sensor 722, e.g., a charged coupleddevice (CCD) or a complementary metal-oxide semiconductor (CMOS) opticalsensor, can be utilized to facilitate camera functions, such asrecording photographs and video clips.

Communication functions can be facilitated through one or morecommunication subsystems 724. Communication subsystem(s) 724 can includeone or more wireless communication subsystems. Wireless communicationsubsystems 724 can include radio frequency receivers and transmittersand/or optical (e.g., infrared) receivers and transmitters. Wiredcommunication system can include a port device, e.g., a Universal SerialBus (USB) port or some other wired port connection that can be used toestablish a wired connection to other computing devices, such as othercommunication devices, network access devices, a personal computer, aprinter, a display screen, or other processing devices capable ofreceiving or transmitting data. The specific design and implementationof the communication subsystem 724 can depend on the communicationnetwork(s) or medium(s) over which the device is intended to operate.For example, a device may include wireless communication subsystemsdesigned to operate over a global system for mobile communications (GSM)network, a GPRS network, an enhanced data GSM environment (EDGE)network, 802.x communication networks (e.g., WI-FI, WIMAX, or 3Gnetworks), code division multiple access (CDMA) networks, and aBLUETOOTH™ network. Communication subsystems 724 may include hostingprotocols such that the device may be configured as a base station forother wireless devices. As another example, the communication subsystemscan allow the device to synchronize with a host device using one or moreprotocols, such as, for example, the TCP/IP protocol, HTTP protocol, UDPprotocol, and any other known protocol.

Audio subsystem 726 can be coupled to a speaker 728 and one or moremicrophones 730 to facilitate voice-enabled functions, such as voicerecognition, voice replication, digital recording, and telephonyfunctions.

I/O subsystem 740 can include touch controller 742 and/or other inputcontroller(s) 744. Touch controller 742 can be coupled to a touchsurface 746. Touch surface 746 and touch controller 742 can, forexample, detect contact and movement or break thereof using any of anumber of touch sensitivity technologies, including but not limited tocapacitive, resistive, infrared, and surface acoustic wave technologies,as well as other proximity sensor arrays or other elements fordetermining one or more points of contact with touch surface 746. In oneimplementation, touch surface 746 can display virtual or soft buttonsand a virtual keyboard, which can be used as an input/output device bythe user.

Other input controller(s) 744 can be coupled to other input/controldevices 748, such as one or more buttons, rocker switches, thumb-wheel,infrared port, USB port, and/or a pointer device such as a stylus. Theone or more buttons (not shown) can include an up/down button for volumecontrol of speaker 728 and/or microphone 730.

In some implementations, device 700 can present recorded audio and/orvideo files, such as MP3, AAC, and MPEG files. In some implementations,device 700 can include the functionality of an MP3 player and mayinclude a pin connector for tethering to other devices. Otherinput/output and control devices can be used.

Memory interface 702 can be coupled to memory 750. Memory 750 caninclude high-speed random access memory or non-volatile memory, such asone or more magnetic disk storage devices, one or more optical storagedevices, or flash memory (e.g., NAND, NOR). Memory 750 can storeoperating system 752, such as DARWIN, RTXC, LINUX, UNIX, OS X, WINDOWS,or an embedded operating system such as VXWORKS. Operating system 752may include instructions for handling basic system services and forperforming hardware dependent tasks. In some implementations, operatingsystem 752 can include a kernel (e.g., UNIX kernel).

Memory 750 may also store communication instructions 754 to facilitatecommunicating with one or more additional devices, one or more computersor servers. Communication instructions 754 can also be used to select anoperational mode or communication medium for use by the device, based ona geographic location (obtained by the GPS/Navigation instructions 768)of the device. Memory 750 may include graphical user interfaceinstructions 756 to facilitate graphic user interface processing; sensorprocessing instructions 758 to facilitate sensor-related processing andfunctions; phone instructions 760 to facilitate phone-related processesand functions; electronic messaging instructions 762 to facilitateelectronic-messaging related processes and functions; web browsinginstructions 764 to facilitate web browsing-related processes andfunctions and display GUIs described in reference to FIG. 5; mediaprocessing instructions 766 to facilitate media processing-relatedprocesses and functions; GPS/Navigation instructions 768 to facilitateGPS and navigation-related processes; camera instructions 770 tofacilitate camera-related processes and functions; and instructions 772for a device automation application that is capable of configuringautomation settings for one or more particular geographic locations, asdescribed in reference to FIGS. 1-3. The memory 750 may also store othersoftware instructions for facilitating other processes, features andapplications, such as applications related to navigation, socialnetworking, location-based services or map displays.

Each of the above identified instructions and applications cancorrespond to a set of instructions for performing one or more functionsdescribed above. These instructions need not be implemented as separatesoftware programs, procedures, or modules. Memory 750 can includeadditional instructions or fewer instructions. Furthermore, variousfunctions of the mobile device may be implemented in hardware and/or insoftware, including in one or more signal processing and/or applicationspecific integrated circuits.

What is claimed is:
 1. A method comprising: determining a distance of afirst mobile device from a location, the first mobile device beingassociated with the location; determining a duration that the firstmobile device is located beyond a threshold distance from the location;selecting an automation mode for an environment at the location based atleast in part on the determined distance and duration; determining adistance of a second mobile device from the location, the second mobiledevice being associated with the location; and adjusting the automationmode for the location based in part on the determined distance of thesecond mobile device, wherein the adjusting comprises averagingautomation settings for the first mobile device and the second mobiledevice, wherein the automation settings are stored in user profiles forthe first and second mobile devices, where the method is performed byone or more hardware processors.
 2. The method of claim 1, whereinselecting an automation mode for the location comprises adjusting thestates of one or more devices associated with the location.
 3. Themethod of claim 1, wherein determining a distance of a mobile devicefrom a location comprises: sending to the mobile device one or morelocation requests; and in response to the sending, receiving from themobile device one or more location indicators.
 4. The method of claim 1,wherein determining a distance of a mobile device from a locationcomprises receiving from the mobile device one or more locationindicators.
 5. The method of claim 2, wherein the one or more devicesinclude lighting systems, appliances, entertainment devices, securitycontrol systems and climate control systems.
 6. The method of claim 1,wherein a mobile device is associated with a user profile, and whereinselection of an automation mode for the location results in adjustingone or more devices based on automation settings for the one or moredevices stored in the associated user profile.
 7. A system comprising:one or more processors; and memory coupled to the one or more processorsand configured for storing instructions, which, when executed by the oneor more processors, cause the one or more processors to performoperations comprising: determining a distance of a first mobile devicefrom a location, the first mobile device being associated with thelocation; determining a duration that the first mobile device is locatedbeyond a threshold distance from the location; selecting an automationmode for an environment at the location based at least in part on thedetermined distance and duration; determining a distance of a secondmobile device from the location, the second mobile device beingassociated with the location; and adjusting the automation mode for thelocation based in part on the determined distance of the second mobiledevice, wherein the adjusting comprises averaging automation settingsfor the first mobile device and the second mobile device, wherein theautomation settings are stored in user profiles for the first and secondmobile devices.
 8. The system of claim 7, wherein selecting anautomation mode for the location comprises adjusting the states of oneor more devices associated with the location.
 9. The system of claim 7,wherein determining a distance of a mobile device from a locationcomprises: sending to the mobile device one or more location requests;and in response to the sending, receiving from the mobile device one ormore location indicators.
 10. The system of claim 7, wherein determininga distance of a mobile device from a location comprises receiving fromthe mobile device one or more location indicators.
 11. The system ofclaim 8, wherein the one or more devices include lighting systems,appliances, entertainment devices, security control systems and climatecontrol systems.
 12. The system of claim 7, wherein a mobile device isassociated with a user profile, and wherein selection of an automationmode for the location results in adjusting one or more devices based onautomation settings for the one or more devices stored in the associateduser profile.
 13. A non-transitory computer-readable medium havinginstructions stored thereon, which, when executed by one or moreprocessors, are configured to cause the one or more processors toperform operations comprising: determining a distance of a first mobiledevice from a location, the first mobile device being associated withthe location; determining a duration that the first mobile device islocated beyond a threshold distance from the location; selecting anautomation mode for an environment at the location based at least inpart on the determined distance and duration; determining a distance ofa second mobile device from the location, the second mobile device beingassociated with the location; and adjusting the automation mode for thelocation based in part on the determined distance of the second mobiledevice, wherein the adjusting comprises averaging automation settingsfor the first mobile device and the second mobile device, wherein theautomation settings are stored in user profiles for the first and secondmobile devices.
 14. The medium of claim 13, wherein selecting anautomation mode for the location comprises adjusting the states of oneor more devices associated with the location.
 15. The medium of claim13, wherein determining a distance of a mobile device from a locationcomprises: sending to the mobile device one or more location requests;and in response to the sending, receiving from the mobile device one ormore location indicators.
 16. The medium of claim 13, whereindetermining a distance of a mobile device from a location comprisesreceiving from the mobile device one or more location indicators. 17.The medium of claim 14, wherein the one or more devices include lightingsystems, appliances, entertainment devices, security control systems andclimate control systems.
 18. The medium of claim 13, wherein a mobiledevice is associated with a user profile, and wherein selection of anautomation mode for the location results in adjusting one or moredevices based on automation settings for the one or more devices storedin the associated user profile.
 19. A method comprising: receiving, at anetwork device, information about a distance of a mobile device from afirst location, the mobile device being associated with the firstlocation; determining, by the network device, that the distance of themobile device from the first location equals or exceeds a first distancethreshold from the first location; computing, by the network device, aduration that the mobile device is located beyond the first distancethreshold from the first location; determining, by the network device,whether the duration equals or exceeds a duration threshold; and inresponse to determining that the distance of the mobile device from thefirst location equals or exceeds the first distance threshold and theduration equals or exceeds the duration threshold, selecting, from adatabase coupled to the network device, a first automation mode for thefirst location, the first automation mode associated with the firstdistance threshold.
 20. The method of claim 19, wherein selecting thefirst automation mode for the first location comprises: adjustingoperational settings for one or more devices associated with the firstlocation based on values for the operational settings that are storedassociated with the first automation mode.
 21. The method of claim 20,wherein adjusting the operational settings for the one or more devicescomprises: determining a present time of the day at the first location;and selecting, from values for the operational settings that are storedassociated with the first automation mode, a set of values thatcorrespond to the present time of the day.
 22. The method of claim 19,wherein determining the distance of the mobile device from the firstlocation comprises: receiving, from the mobile device, one or morelocation indicators.
 23. The method of claim 19, wherein determining thedistance of the mobile device from the first location comprises:receiving, from the mobile device, information that a user of the mobiledevice has provided, to a networking site, an input corresponding to asecond location; associating the second location with the mobile device;and computing a distance of the second location from the first location.24. The method of claim 19, wherein a user profile is associated withthe mobile device, and wherein selecting the first automation mode forthe first location comprises: retrieving the user profile associatedwith the mobile device; and determining, for one or more devicesassociated with the first location, automation settings that are storedcorresponding to the user profile.
 25. The method of claim 19, furthercomprising: determining whether the distance of the mobile device fromthe first location equals or exceeds a second distance threshold fromthe first location; in response to determining that the distance of themobile device from the first location equals or exceeds the seconddistance threshold and the duration equals or exceeds the durationthreshold, selecting, from the database, a second automation mode forthe first location, the second automation mode associated with thesecond distance threshold; and in response to determining that thedistance of the mobile device from the first location is less than thesecond distance threshold, selecting the first automation mode for thefirst location.
 26. A system comprising: one or more processors; andmemory coupled to the one or more processors and storing instructions,which, when executed by the one or more processors, are configured tocause the one or more processors to perform operations comprising:receiving, at a network device, information about a distance of a mobiledevice from a first location, the mobile device being associated withthe first location; determining, by the network device, that thedistance of the mobile device from the first location equals or exceedsa first distance threshold from the first location; computing, by thenetwork device, a duration that the mobile device is located beyond thefirst distance threshold from the first location; determining, by thenetwork device, whether the duration equals or exceeds a durationthreshold; and in response to determining that the distance of themobile device from the first location equals or exceeds the firstdistance threshold and the duration equals or exceeds the durationthreshold, selecting, from a database coupled to the network device, afirst automation mode for the first location, the first automation modeassociated with the first distance threshold.
 27. The system of claim26, wherein selecting the first automation mode for the first locationcomprises: adjusting operational settings for one or more devicesassociated with the first location based on values for the operationalsettings that are stored associated with the first automation mode. 28.The system of claim 27, wherein adjusting the operational settings forthe one or more devices comprises: determining a present time of the dayat the first location; and selecting, from values for the operationalsettings that are stored associated with the first automation mode, aset of values that correspond to the present time of the day.
 29. Thesystem of claim 26, wherein determining the distance of the mobiledevice from the first location comprises: receiving, from the mobiledevice, one or more location indicators.
 30. The system of claim 26,wherein determining the distance of the mobile device from the firstlocation comprises: receiving, from the mobile device, information thata user of the mobile device has provided, to a networking site, an inputcorresponding to a second location; associating the second location withthe mobile device; and computing a distance of the second location fromthe first location.
 31. The system of claim 26, wherein a user profileis associated with the mobile device, and wherein selecting the firstautomation mode for the first location comprises: retrieving the userprofile associated with the mobile device; and determining, for one ormore devices associated with the first location, automation settingsthat are stored corresponding to the user profile.
 32. The system ofclaim 26, wherein the instructions are configured to cause the one ormore processors to perform operations further comprising: determiningwhether the distance of the mobile device from the first location equalsor exceeds a second distance threshold from the first location; inresponse to determining that the distance of the mobile device from thefirst location equals or exceeds the second distance threshold and theduration equals or exceeds the duration threshold, selecting, from thedatabase, a second automation mode for the first location, the secondautomation mode associated with the second distance threshold; and inresponse to determining that the distance of the mobile device from thefirst location is less than the second distance threshold, selecting thefirst automation mode for the first location.
 33. A non-transitorycomputer-readable medium storing instructions, which, when executed byone or more processors, are configured to cause the one or moreprocessors to perform operations comprising: receiving, at a networkdevice, information about a distance of a mobile device from a firstlocation, the mobile device being associated with the first location;determining, by the network device, that the distance of the mobiledevice from the first location equals or exceeds a first distancethreshold from the first location; computing, by the network device, aduration that the mobile device is located beyond the first distancethreshold from the first location; determining, by the network device,whether the duration equals or exceeds a duration threshold; and inresponse to determining that the distance of the mobile device from thefirst location equals or exceeds the first distance threshold and theduration equals or exceeds the duration threshold, selecting, from adatabase coupled to the network device, a first automation mode for thefirst location, the first automation mode associated with the firstdistance threshold.
 34. The medium of claim 33, wherein selecting thefirst automation mode for the first location comprises: adjustingoperational settings for one or more devices associated with the firstlocation based on values for the operational settings that are storedassociated with the first automation mode.
 35. The medium of claim 34,wherein adjusting the operational settings for the one or more devicescomprises: determining a present time of the day at the first location;and selecting, from values for the operational settings that are storedassociated with the first automation mode, a set of values thatcorrespond to the present time of the day.
 36. The medium of claim 33,wherein determining the distance of the mobile device from the firstlocation comprises: receiving, from the mobile device, one or morelocation indicators.
 37. The medium of claim 33, wherein determining thedistance of the mobile device from the first location comprises:receiving, from the mobile device, information that a user of the mobiledevice has provided, to a networking site, an input corresponding to asecond location; associating the second location with the mobile device;and computing a distance of the second location from the first location.38. The medium of claim 33, wherein a user profile is associated withthe mobile device, and wherein selecting the first automation mode forthe first location comprises: retrieving the user profile associatedwith the mobile device; and determining, for one or more devicesassociated with the first location, automation settings that are storedcorresponding to the user profile.
 39. The medium of claim 33, whereinthe instructions are configured to cause the one or more processors toperform operations further comprising: determining whether the distanceof the mobile device from the first location equals or exceeds a seconddistance threshold from the first location; in response to determiningthat the distance of the mobile device from the first location equals orexceeds the second distance threshold and the duration equals or exceedsthe duration threshold, selecting, from the database, a secondautomation mode for the first location, the second automation modeassociated with the second distance threshold; and in response todetermining that the distance of the mobile device from the firstlocation is less than the second distance threshold, selecting the firstautomation mode for the first location.